package lkx.demo.test2;

/**
 *
 * 测试变量的基本使用
 *
 * 1. 变量的理解：内存中的一个存储区域，该区域的数据可以在同一类型范围内不断变化
 *
 * 2. 变量的构成包含三个要素：数据类型、变量名、存储的值
 *
 * 3. Java中变量声明的格式：数据类型 变量名 = 变量值
 *
 * 4. Java中的变量按照数据类型来分类：
 * 	基本数据类型（8种）:
 * 		整型：byte \ short \ int \ long
 * 		浮点型：float \ double
 * 		字符型：char
 * 		布尔型：boolean
 *
 *
 *  本demo测试整型和浮点型变量的使用
 *
 *
 * @author kunxianli
 * @date 2024/01/04 16:46
 **/
public class TestVariable3 {

    public static void main(String[] args) {

//        整型 byte、short、int、long==================================================
//        // byte(1字节=8bit) \ short(2字节) \ int(4字节) \ long(8字节)
        byte a1 = 127;
//        byte a2 = 128; //编译不通过。因为超出了byte的存储范围

        short b1 = 128;

        int  c1 = 12345;

//        声明long类型变量时，需要提供后缀。后缀为'l'或'L'
        long d1 = 1213l;
        long d2 = 121311L;

//        浮点型 float 、double ==============================================

//        声明float类型变量时，需要提供后缀。后缀为'f'或'F'
        float e1 = 12.234f;
        float e2 = 12.234F;

        //  java种默认小数就是double类型，开发时一般都是定义double
        double f1 = 123.123;

//        注意 精度问题,这种是由于计算机存储机制导致的，如果需要极高的精度，需要使用BigDecimal类替换浮点型变量。
        double g1 = 0.1;
        double g2 = 0.2;
        System.out.println(g1+g2); // 0.30000000000000004

        float h1 = 123123123f;
        float h2 = h1 + 1;
        System.out.println(h1); // 1.2312312E8
        System.out.println(h2); // 1.2312312E8
        System.out.println(h1 == h2); // true，这也是精度不高导致的。

        double ff1 = 123123123f;
        double ff2 = ff1 + 1;
        System.out.println(ff1); // 1.2312312E8
        System.out.println(ff2); // 1.23123121E8
        System.out.println(ff1 == ff2); // false，和上面比说明

    }


}
